工作流引擎Activiti使用进阶!详细解析工作流框架中高级功能的使用示例 您所在的位置:网站首页 工作流引擎 Activiti 保姆级教程 工作流引擎Activiti使用进阶!详细解析工作流框架中高级功能的使用示例

工作流引擎Activiti使用进阶!详细解析工作流框架中高级功能的使用示例

2024-05-19 07:01| 来源: 网络整理| 查看: 265

Activiti高级功能简介 Activiti的高级用例,会超越BPMN 2.0流程的范畴,使用Activiti高级功能需要有Activiti开发的明确目标和足够的Activiti开发经验 监听流程解析 bpmn 2.0 xml文件需要被解析为Activiti内部模型,然后才能在Activiti引擎中运行.解析过程发生在发布流程或在内存中找不到对应流程的时候,这时会从数据库查询对应的xml 对于每个流程 ,BpmnParser类都会创建一个新的BpmnParse实例.这个实例会作为解析过程中的容器来使用

解析过程:

对于每个BPMN 2.0元素,引擎中都会有一个对应的org.activiti.engine.parse.BpmnParseHandler实例 解析器会保存一个BPMN 2.0元素与BpmnParseHandler实例的映射 默认Activiti使用BpmnParseHandler来处理所有支持的元素 同时也使用BpmnParseHandler来提供执行监听器,以支持流程历史 可以向Activiti引擎中添加自定义的org.activiti.engine.parse.BpmnParseHandler实例 经常使用的用例是把执行监听器添加到对应的环节,来处理一些事件队列.Activiti在内部就是这样进行历史处理的 要想添加这样的自定义处理器,需要为Activit增加配置:

当自定义处理器内部逻辑对处理顺序有要求时需要考虑:

配置到preBpmnParseHandlers的BpmnParseHandler实例会添加在默认处理器的前面 配置到postBpmnParseHandlers的BpmnParseHandler实例会添加在默认处理器的后面 接口- org.activiti.engine.parse.BpmnParseHandler: public interface BpmnParseHandler { Collection? extends BaseElement>> getHandledTypes(); void parse(BpmnParse bpmnParse, BaseElement element); }

在BpmnParseHandler接口中:

getHandledTypes()方法会翻译这个解析器处理的所有类型的集合,这些都是BaseElement的子类,返回集合的泛型限制也说明了这一点 也可以继承AbstractBpmnParseHandler类并重写getHandledType()方法,这样就只需要返回一个类型,而不是一个集合 这个类也包含需要默认解析处理器所需要的方法 BpmnParseHandler实例只有在解析器访问到这个方法返回的类型时才会被调用

示例:

当BPMN 2.0 xml包含process元素时,就会执行executeParse方法中的逻辑 这是一个已经完成类型转换的方法,替换BpmnParseHandler接口中的parse方法 public class TestBPMNParseHandler extends AbstractBpmnParseHandler { protected Class


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有